/*
 *  $Id: Events.cs 1063 2010-05-20 17:40:43Z thenn.erannor $
 *	This file is a part of Ragima CCG.
 *	(C) 2008 Ragima development group.
 *
 *	Licensed under the terms of the GNU GPL License version 2.
 *
 */

namespace Ragima {
    public delegate void SimpleEvent();

    public delegate void AbstractEvent(AbstractObject obj);
    public delegate void AbilityEvent(AbilityCard ability, TargetArgs args);
    public delegate void CardEvent(Card card, TargetArgs args);

    public delegate void PlayerEvent(Player player);
    public delegate void CreatureEvent(Creature creature);
    public delegate void CreatureMoveEvent(Creature creature, int from, int to);
    public delegate void LandEvent(Land land);

    public delegate void AttackTryEvent(Creature attacker, ref bool canAttack);
    public delegate void DefenceTryEvent(Creature defender, Creature attacker, ref bool canDefence);

    public delegate void ManaChangeEvent(Player player, ElementType element, int value);

    public delegate void HitEvent(Creature hitter, AbstractObject target, int damage);

    public delegate void DamageEvent(AbstractObject target, DamageInfo damage);

    public delegate bool CardPredicate(Player player, Card card);
    public delegate bool CreaturePredicate(Creature creature);
}